﻿using System;
using System.Runtime.Serialization;

namespace JTLeigh.Commerce.Spencer.Features.ProductImages.Service.Contracts.Runtime.GetProductImages
{

	/// <summary>
	/// Data contract representing an image size.
	/// </summary>
	/// <remarks>
	/// <para>
	/// Examples of image sizes are &quot;Thumbnail&quot;, &quot;Small&quot;, &quot;Medium&quot;, 
	/// &quot;Large&quot;, etc.
	/// </para>
	/// </remarks>
    [DataContract(Name = "ProductImageSize", Namespace = "http://schemas.jtleigh.com/Commerce/Spencer/Features/ProductImages/1.0/Runtime/GetProductImages/")]
    public class ProductImageSize
	{

		/// <summary>
		/// Gets or sets the size identifier.
		/// </summary>
		/// <value>A size identifier <see cref="Guid"/>.</value>
		[DataMember(Name = "SizeId", IsRequired = true)]
		public Guid SizeId { get; set; }

		/// <summary>
		/// Gets or sets the well-known size code.
		/// </summary>
		/// <value>A well-known size code <see cref="Byte"/>.</value>
        [DataMember(Name = "WellKnownSizeCode", IsRequired = true)]
		public byte WellKnownSizeCode { get; set; }

		/// <summary>
		/// Gets or sets the width of the image.
		/// </summary>
		/// <value>An <see cref="Int16"/> pixel width.</value>
		[DataMember(Name = "Width", IsRequired = true)]
		public short Width { get; set; }

		/// <summary>
		/// Gets or sets the height of the image.
		/// </summary>
		/// <value>An <see cref="Int16"/> pixel height.</value>
		[DataMember(Name = "Height", IsRequired = true)]
		public short Height { get; set; }

		/// <summary>
		/// Gets or sets the order in which the size should be displayed.
		/// </summary>
		/// <value>An <see cref="Int32"/> ordinal position.</value>
		[DataMember(Name = "DisplayOrder", IsRequired = true)]
		public int DisplayOrder { get; set; }

		/// <summary>
		/// Gets or sets the name of the size.
		/// </summary>
		[DataMember(Name = "Name", IsRequired = true)]
		public string Name { get; set; }

	}

}
